#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=310;

int f[N][N];
int p[N][N][N];

int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int w,l,r;
		cin>>w>>l>>r;
		for(int k=l;k<=r;k++)
		{
			p[k][l][r]=w;
		}
	}
	
	for(int len=1;len<=n;len++)
	{
		for(int l=1;l+len-1<=n;l++)
		{
			int r=l+len-1;
			for(int k=l;k<=r;k++)
			{
				p[k][l][r]=max({p[k][l][r],p[k][l+1][r],p[k][l][r-1]});
			}
		}
	}
	
	for(int len=1;len<=n;len++)
	{
		for(int l=1;l+len-1<=n;l++)
		{
			int r=l+len-1;
			for(int k=l;k<=r;k++)
			{
				f[l][r]=max(f[l][r],f[l][k-1]+f[k+1][r]+p[k][l][r]);
			}
		}
	}
	
	cout<<f[1][n];

	return 0;
}

